// 简单工厂类，又叫静态方法工厂 是用来解决具备相同父类外观的子类产品实例化问题
// 对用户来说，看不到具体子类产品实例化的细节
public class SimpleFactory {

    // 静态方法，用于实例化具体子类产品
    // 简单工厂本身违背了开放封闭原则（OCP），因此没有被纳入GOF 23种设计模式
    // 但是可以通过反射实例化子类对象
    public static Product getProduct(String productName) {
        switch (productName) {
        case "A":
            return new ProductA();
        case "B":
            return new ProductB();
        default:
            return null; // 注意这里调用时有可能会出现空指针异常
        }
    }
}

// 父类产品
class Product { }

// 子类产品 ProductA
class ProductA extends Product { }

// 子类产品 ProductB
class ProductB extends Product { }